package com.example.musicplayer

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide

class RecommendedSongAdapter(val recList:List<rec>):RecyclerView.Adapter<RecommendedSongAdapter.ViewHolder>() {

    //初始化子项布局的控件
    inner class ViewHolder(view:View):RecyclerView.ViewHolder(view) {
        val recImage:ImageView=view.findViewById(R.id.recImage)
        val recName:TextView=view.findViewById(R.id.recName)
    }

    //找到引用的子项布局xml文件
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view=LayoutInflater.from(parent.context).inflate(R.layout.recommended_song_item,parent,false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        //子项布局每一个控件的设置来源于预先设计好的容器数据中的元素
        //这里根据网络请求返回的数据设计了一个用网络请求所有JSON格式元素做对象的属性，并将每一个对象放进列表中
        //形成一个 由JSON元素做对象属性，由对象作为元素的列表
        val recData=recList[position]
        holder.recName.text=recData.name  //设置子项的文本内容
        Glide.with(holder.itemView.context)  //设置子项的图片内容
            .load(recData.recImgUrl)
            .into(holder.recImage)
    }

    override fun getItemCount(): Int {
        //返回数据容器的长度没什么好说的，要问我这个干嘛的我只能说回调数据和生命周期函数里可能有点用吧，目前没有就是了
        return recList.size
    }
}